// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})

// 1. 先配置一个基地址
axios.defaults.baseURL = 'http://ajax-api.itheima.net'


// 2. 添加请求拦截器：每一个请求之前都会拦截请求到下面的函数中进行处理
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 后面几次请求都要给请求头设置token,每次在请求设置很麻烦，
  // 所以统一设置给请求拦截器，那么每次请求，都会走请求拦截器，就会设置好token
  config.headers.Authorization = localStorage.getItem('hm_token')
  // console.log(config)
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 3. 添加响应拦截器: 每次服务器返回 给我们数据后，都会今日到 响应拦截器中，我们可以在响应拦截器中处理跟响应有关的内容
axios.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  // console.log(response) // 在响应拦截器中的参数 response 就是 后台返回给我们的数据（被axios包装的）
  // 然后我们返回 response.data 就是后台原始的数据
  // 那么我们再 axios请求后再次使用数据的时候，就不需要 res.data.data
  return response.data
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  // 在本次项目中，如果 token 过期了，或者 用户使用 的是假的 token，此时会出现 401响应状态码。
  // 如果出现了401 错误，那么你需要重新登录，清除token返回 登录页面
  if (error.response.status === 401) {
    // 此时token过期
    localStorage.clear()
    location.href = './login.html'
  }
  return Promise.reject(error)
}) 